import GameEvent from "./event/GameEvent";
import { EventType } from "./enum/GameEnum";
import BookEvent_Emit from "./event/BookEvent_Emit";
import BookEvent_Dispatch from "./event/BookEvent_Dispatch";

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property(cc.Label)
    label: cc.Label = null;

    @property
    text: string = 'hello';

     // 星星和主角之间的距离小于这个数值时，就会完成收集
    @property
    private pickRadius:number = 0;
    // LIFE-CYCLE CALLBACKS:

    public game:any = null;

    // onLoad () {}

    start ()
    {
        
    }

    private msg(obj):void
    {
        cc.warn("cocos事件传递",obj);
    }

    update (dt) 
    {
         // 每帧判断和主角之间的距离是否小于收集距离
         if (this.getPlayerDistance() < this.pickRadius) {
            // 调用收集行为
            this.onPicked();
            return;
        }

        // 根据 Game 脚本中的计时器更新星星的透明度
        var opacityRatio = 1 - this.game.timer/this.game.starDuration;
        var minOpacity = 50;
        this.node.opacity = minOpacity + Math.floor(opacityRatio * (255 - minOpacity));
    }

    private getPlayerDistance()
    {
        // 根据 player 节点位置判断距离
        var playerPos = this.game.player.getPosition();
        // 根据两点位置计算两点之间距离
        var dist = this.node.position.sub(playerPos).mag();
        return dist;
    }

    private onPicked() 
    {
        // 当星星被收集时，调用 Game 脚本中的接口，生成一个新的星星
        this.game.spawnNewStar();
        // 调用 Game 脚本的得分方法
        this.game.gainScore();
        // 然后销毁当前星星节点
        this.node.destroy();
    }
}
